/**
 * 
 */
package com.obradovicnjegovan.webprodavnica.components;

import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.ioc.annotations.Inject;

import com.obradovicnjegovan.webprodavnica.controller.ControllerAL;
import com.obradovicnjegovan.webprodavnica.entities.OdabranProizvod;

/**
 * @author njegovan
 *
 */
public class OdabranProizvodPrikaz {
	@Parameter(required = true)
	private OdabranProizvod op;
	@Inject
	private ControllerAL controllerAL;

	public OdabranProizvod getOp() {
		return op;
	}

	public void setOp(OdabranProizvod op) {
		this.op = op;
	}
	
	public String formatDouble(double cena){
		return controllerAL.formatDouble(cena);
	}
	
	public double getCenaOd(){
		return op.getProizvod().getCena()*op.getKolicina();
	}
	
	@InjectComponent
	private Zone zone;
	
	public Object onIzbaciProizvodIzKorpe(OdabranProizvod odabranProizvod){
		controllerAL.getKorpa().getOdabraniProizvodi().remove(odabranProizvod);
		controllerAL.sacuvajKorpu(controllerAL.getKorpa());
		return zone.getBody();
	}
	
	public Object onDodaj(OdabranProizvod odabranProizvod){
		for (OdabranProizvod o : controllerAL.getKorpa().getOdabraniProizvodi()) {
			if (o.equals(odabranProizvod)) {
				o.setKolicina(o.getKolicina()+1);
				controllerAL.sacuvajKorpu(controllerAL.getKorpa());
				return zone.getBody();
			}
		}
		return null;
	}
	
	
	public Object onOduzmi(OdabranProizvod odabranProizvod){
		for (OdabranProizvod o : controllerAL.getKorpa().getOdabraniProizvodi()) {
			if (o.equals(odabranProizvod)) {
				int signum = Integer.signum(o.getKolicina() - 1);
				switch (signum) {
				case 1:
					o.setKolicina(o.getKolicina()-1);
					controllerAL.sacuvajKorpu(controllerAL.getKorpa());
					return zone.getBody();
				case 0:
					onIzbaciProizvodIzKorpe(odabranProizvod);
					return zone.getBody();
					
				default:
					return null;
				}

			} 
		}
		return null;
	}
}